import axios from 'axios'

// token值从后台获取的密钥没有可以不传
// const token = ''
// 统一传token
// axios.defaults.headers['token'] = `${token}`;

// 创建自定义实例
const service = axios.create({
    baseURL: process.env.VUE_APP_API_URL, // 从环境变量读取基础地址
    timeout: 15000 // 请求超时时间
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 在发送请求前做些什么
        return config
    },
    error => {
        // 对请求错误做些什么
        return Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        const res = response.data

        // 自定义状态码验证（根据后端约定）
        // if (res.code !== 200) {
        //     return Promise.reject(new Error(res.message || 'Error'))
        // } else {
        return res
    },
    error => {
        return Promise.reject(error)
    }
)

// 封装GET/POST快捷方法
export function get(url, params, options = {}) {
    return service({
        url,
        params,
        method: 'GET',
        ...options
    })
}

export function post(url, data, options = {}) {
    return service({
        url,
        data,
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            ...options.headers
        },
        ...options
    })
}
